卡尔曼滤波

Kalman Filter
Optimal-Recursive-Data Processing-Algorithm 优化-递归-数据处理-算法

最优的线性滤波器,虽然名称为滤波器,但实际上也可属于状态观测器
态观测器(stateobserver),用来从输入和输出“重构”系统的状态。

生活中存在大量的不确定性,此算法得以普适地应用

  1. 不存在完美的数学模型
  2. 系统的扰动不可控,较难建模
  3. 测量传感器存在误差

引入例子

估计真实结果,取平均值
k 次测量 zk
k 次的估计值 x^k

x^k=1k(z1+z2++zk)=1k(z1+z2++zk1)+1kzk=k1k1k1(z1+z2++zk1)+1kzk=k1kx^k1+1kzk=x^k1+1k(zkx^k1)

提炼出:

x^k=x^k1+Kk(zkx^k1)

递归,且只与上一次的有关联

Kk=eESTk1eESTk1+eMEAk {eESTk1eMEAkKk1x^k=zkeESTk1eMEAkKk0x^k=x^k1

步骤

Kk=eESTk1eESTk1+eMEAk
x^k=x^k1+Kk(zkx^k1)
eESTk=(1Kk)eESTk1

数学基础

数据融合

卡尔曼滤波器把不同来源的数据按不同的信噪比加权“整合”起来
Data Fusion
正态分布

X1N(μ1,σ12),X2N(μ2,σ22)
X^=X1+K(X2X1)

X^={X1K=0X2K=1

K 为何值时,D(X^) 最小

D(X^)=(1K)2σ12+K2σ22

dD(X^)dX=0 时,K=σ12σ12+σ22

估计的数据:X^N(μ1σ22+μ2σ12σ12+σ22,σ12σ22σ12+σ22)

协方差矩阵

协方差矩阵

核心公式

1.预测

状态空间
先验估计值

X^k=AX^k1+Buk1

先验误差的协方差矩阵:

Pk=APk1AT+Q

2.校正/更新

卡尔曼增益

Kk=PkHTHPkHT+R

后验估计值

X^k=X^k+Kk(ZkHX^k)

误差的协方差矩阵

Pk=(IKkH)Pk

推导过程

Xk=AXk1+Buk1+ωk1Zk=HXk+νk

Q=E[ωωT]=E([ω1ω2][ω1ω2])=E([ω12ω1ω2ω2ω1ω22])=[σω12σω1σω2σω2σω1σω22]

由于存在噪声,而噪声无法被建模,直接通过状态空间方程得到两个不准确的值(估计值):

卡尔曼滤波就是要根据两个不太准确的结果来得出准确的结果
结合数据融合,得到 X^k 后验估计值

X^k=X^k+G(H1ZkX^k)X^k=X^k+Kk(ZkHX^k)

G(0,1)Kk=GH1(0,H1)

实际值 Xk, 估计值 X^k, 误差 ek=XkX^k
ek(0,P) P=E(eeT)=[σe12σe1σe2σe2σe1σe22]

寻找 Kk 使得误差协方差矩阵的迹最小 tr(P)=σe12+σe22 有最小值

ek=XkX^k=Xk(X^k+Kk(ZkHX^k))=Xk(X^k+Kk(HXk+νkHX^k))=XkX^kKkHXkKkνk+KkHX^k=XkX^kKkH(XkX^k)Kkνk=(IKkH)(XkX^k)Kkνk=(IKkH)(ek)Kkνk

卡尔曼增益:

Kk=PkHTHPkHT+R

实际使用

实现多传感器的数据融合

理论

预测阶段:
状态预测:使用当前估计状态和系统模型来预测下一个状态。
协方差预测:估计预测状态的不确定性协方差。

更新阶段:
计算卡尔曼增益:基于预测状态的不确定性和实际测量的不确定性来计算。
更新估计:结合预测状态和实际测量来修正状态估计。
更新协方差:更新状态估计的不确定性。

线性动态系统的状态估计算法
一种数学优化技术,主要用于信号处理和控制理论中,以估计未知变量(通常是动态系统的状态)的最优估计。它是基于贝叶斯估计理论的线性滤波器,设计用来从一系列带有噪声的、不完全的观测数据中提取有用的信息。

它能够从一系列包含噪声的测量中估计动态系统的状态。这种滤波器由鲁道夫·卡尔曼(Rudolf E. Kalman)在 1960 年提出,它利用了状态空间模型和贝叶斯估计理论。卡尔曼滤波器的核心思想是使用系统的动态模型和观测数据,通过迭代的方式,对系统的状态进行最优估计。

在一个典型的场景中,卡尔曼滤波器会利用系统动态模型(通过状态方程描述)和观测数据(通过观测方程描述)来迭代地计算系统的状态。状态可以包括位置、速度、加速度等,而观测数据可能是传感器读数,比如雷达测距、GPS 信号等,这些数据往往受到噪声影响而包含误差。

卡尔曼滤波器的关键步骤包括预测(Predictor)和更新(Updater)两个阶段:

  1. 预测阶段:基于系统的运动学模型和前一时刻的最佳状态估计,预测当前状态及其协方差矩阵。
  2. 更新阶段:结合新的观测数据,通过计算卡尔曼增益,将预测结果与实际观测结果进行最优融合,得到更精确的状态估计。

卡尔曼滤波的优点在于它能够实时工作,每次接收到新的观测数据时都会更新并优化其内部的估计。这种方法考虑了观测噪声和过程噪声的统计特性,力求在统计意义下达到最小均方误差的估计效果。

卡尔曼滤波广泛应用于多个领域,包括但不限于航空航天导航、自动驾驶、机器人定位、信号处理、金融建模、天气预报等。

卡尔曼滤波器的基本工作原理包括两个步骤:预测(Predict)和更新(Update)。在预测阶段,滤波器根据系统的动态模型预测下一状态的可能性;在更新阶段,滤波器利用新的观测数据来更新预测,从而获得更准确的估计。

卡尔曼滤波器的关键优势在于其能够处理系统内部和外部的不确定性,如噪声和干扰。它适用于广泛的应用场景,包括航空航天、导航系统、信号处理、机器人定位、经济时间序列分析等。

在实际应用中,卡尔曼滤波器需要根据系统的具体情况来设计,包括确定系统的状态转移矩阵、观测矩阵、过程噪声协方差和观测噪声协方差等参数。此外,卡尔曼滤波器还有多种变体,如扩展卡尔曼滤波器(EKF)、无迹卡尔曼滤波器(UKF)和粒子滤波器(PF),它们适用于不同类型的非线性系统。

卡尔曼滤波器的实现通常需要一定的数学背景,包括线性代数和概率统计知识。在工程实践中,卡尔曼滤波器可以通过编程语言如MATLAB、Python等进行实现。